/*
 * IEtiquetarElemento.h - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#ifndef IETIQUETARELEMENTO_H_
#define IETIQUETARELEMENTO_H_

#include "../dt/ElementoDT.h"
#include "../dt/EtiquetaDT.h"
#include "../util/collections/List.h"
#include <string>
#include "../util/genCollections/ColConcrete.h"
#include "../dt/AlbumDT.h"
#include "../dt/ArtistaDT.h"

using namespace std;

class IEtiquetarElemento
{
public:
	virtual ColConcrete<EtiquetaDT*> *listarEtiquetasElementoYDisponibles(string nombreElemento) = 0;

	virtual ColConcrete<AlbumDT*> *obtenerListadoAlbumes() = 0;

	virtual ColConcrete<ArtistaDT*> *obtenerListadoArtistas() = 0;

	virtual void crearEtiqueta(EtiquetaDT etiquetaDT) = 0;

	virtual void asociarElementoEtiqueta(ElementoDT* elementoDT, EtiquetaDT* etiquetaDT) = 0;

	virtual void confirmarEtiquetado() = 0;

	virtual ~IEtiquetarElemento();
};

#endif /* IETIQUETARELEMENTO_H_ */
